// pages/user/user_pay.js
import { System } from '../../model/system';
import { MemberType } from "../../model/member-type";
import { Pay } from "../../model/pay";

Page({
  /**
   * 页面的初始数据
   */
  data: {
    payArr: [],
    member_msg: '',
    member_type_id: '',
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {
    wx.showLoading({
      title: '加载中',
    });
    this.getSystemInfo();
  },
  /**
   * 获取系统信息
   */
  async getSystemInfo() {
    const res = await System.getInfo();
    this.setData({
      member_msg: res.member_msg,
    })
    this.getMemberTypeList();
  },
  /**
   * 获取会员卡信息
   */
  async getMemberTypeList() {
      const res = await MemberType.getList();
      res.forEach((item) => {
        item.loading = false;
        item.loading_text = '支付中...';
      })
      this.setData({
        payArr: res
      })
     wx.hideLoading();
  },
  /**
   * 创建会员卡支付信息
   */
  async createData(e) {
    const id = e.currentTarget.dataset.id;
    this.setData({
      member_type_id: id
    })
    this.changeLoading(true);
    const res = await MemberType.createOrder(id);
    this.preOrder(res.out_trade_no);
  },
  /**
   * 获取支付信息
   */
  async preOrder(out_trade_no) {
    const res = await Pay.preOrder({ out_trade_no:out_trade_no, payment: 1 });
    if(res.pay_type == 1) {
        this.transferPay(res);
    } else if(res.pay_type == 2) {
        this.changeLoading(false);
        this.successPay();
    }
  },
  /**
   * 调起支付信息
   */
  transferPay(res) {
    const self = this;
    wx.requestPayment({
      timeStamp: res.timeStamp.toString(),
      nonceStr: res.nonceStr,
      package: res.package,
      signType: res.signType,
      paySign: res.paySign,
      success: function (res) {
        self.changeLoading(false);
        self.successPay();
      },
      fail: function (error) {
        if (error.errMsg == "requestPayment:fail cancel") {
          self.changeLoading(false);
          wx.showToast({
            title: '取消了支付',
            icon: 'none',
            duration: 2000
          })
          return false
        } else {
          self.changeLoading(false);
          wx.showToast({
            title: '支付错误',
            icon: 'none',
            duration: 2000
          })
        }
      }
    })
  },
  /**
   * 支付成功弹框
   */
  successPay() {
    wx.showModal({
      title: '温馨提示',
      content: '支付成功',
      showCancel: false,
      confirmText: '知道了',
      confirmColor: '#F3474E',
      success:function(res){
        if (res.confirm){
          wx.switchTab({
            url: '/pages/user/user',
          })
        }
      }
    })
  },
  /**
   * 点击支付后按钮加载效果
   */
  changeLoading(status) {
     const payArr = this.data.payArr;
     payArr.forEach((item) => {
       if(item.id == this.data.member_type_id) {
         if(status) {
           item.loading = true;
         } else {
           item.loading = false;
         }
       }
     })
    this.setData({
      payArr: payArr
    })
  }
})